The Institute of Electrical and Electronic Engineers (IEEE) has promulgated a standard for transmission of multimedia data over a serial communications channel. This standard has been identified as IEEE std. 1394-1995, published Jun. 16, 1995 (1394). The 1394 standard provides a high-speed serial bus that can transfer data between personal computers (PCs), peripheral devices (i.e. any hardware device connected to a computer, such as a monitor, keyboard, printer, scanner, etc.) and consumer electronic devices, using the same physical transmission medium. The 1394 serial bus has inherent plug-n-play capabilities for applications on devices coupled to the 1394 bus. Devices can be added and removed from a 1394 bus while the bus is active. If a device is so added or removed, the bus will then automatically reconfigure itself for transmitting data between the existing nodes.
Interactions between applications on different devices in a network depend on the discovery of devices and services contained within the devices. The technique currently used for providing discovery of devices and services is limited in its efficiency and extensibility. Under this current technique referred to as “Learn Node ID Then Interrogate” discovery, discovery of devices and services occurs only after bus resets. Specifically, a reset of a 1394 bus causes a hardware initialization, which in turn triggers all devices on the bus to send packets with their device identification information to a discovering device, i.e. a device that performs discovery. The discovering device stores the device identifiers. After the hardware initialization completes, the discovering device interrogates the other devices on the bus to learn about their services. The interrogation is performed in the form of 1394 asynchronous read transactions. Each asynchronous read transaction used within the 1394 environment consists of a request packet and a response packet and can read only four bytes of data at a time.
The device and service discovery information of each device is contained in its configuration read only memory (ROM) defined in 1394 specification. Thus, when the discovering device interrogates other devices on the bus, it needs to read the configuration ROM of every device on the bus. Consequently, the number of packets generated during the “Learn Node ID Then Interrogate” discovery depends on the size of the device's configuration ROM and on the number of devices on the bus. The formula for calculating the number of packets is as follows:                (N−1)×D×S×2, where N is the number of devices on the bus, D is the number of devices performing discovery, S is the size of the device's configuration ROM divided by four (the configuration ROM transactions read four bytes per transaction), and 2 represents that there are two packets—a request and response packet—for each read transaction. Thus, for example, in a network with four devices, including three discovering devices, and 150 bytes of the device's configuration ROM, the “Learn Node ID Then Interrogate” discovery generates 684 packets.        
As a result of such a high number of generated packets, the current discovery technique occasionally fails in 1394 networks with three or four devices because some devices cannot respond to the burst of configuration ROM read transactions. That is, a device receives too many transactions in a short period of time which causes the device to lose control of the order of responses to these multiple transactions. The problem increases greatly with larger 1394 networks that exist when multiple buses are connected through a bridge.
Another problem with the “Learn Node ID Then Interrogate” discovery is that it may cause bus reset storms in a network with multiple 1394 buses bridged together. Specifically, a reset of a bus initiates discovery of services and devices on this bus. To obtain information about services and devices on other buses in the network, the initial bus reset must be forwarded from one bus to another. Forwarding bus resets from one bus to another bus may generate a bus reset on the bus to which the bus reset was forwarded. This bus reset is subsequently forwarded back to the other bus which again may cause another bus reset. This pattern, known as a bus reset storm, may continue indefinitely thus rendering the entire 1394 bus useless. Therefore, the “Learn Node ID Then Interrogate” discovery cannot be used in networks with multiple 1394 buses.
The risk of causing bus reset storms also exists in a home network, in which a 1394 network is connected to a non-1394 network so that, for example, PCs with non-1394 interfaces can interact with 1394 devices. Similarly to the operation of the “Learn Node ID Then Interrogate” discovery in a network with multiple 1394 buses, the operation of this technique in a 1394 network connected to a non-1394 network may require bus resets to be forwarded to the non-1394 network. As discussed above, forwarding bus resets may lead to bus reset storms which interfere with proper functioning of the devices in the network. Thus, the “Learn Node ID Then Interrogate” discovery cannot be used in neither networks with multiple 1394 buses nor in 1394 networks connected to non-1394 networks.
Therefore, there is a need for an efficient and extensible broadcast discovery protocol which allows discovery of devices and services in a network with multiple 1394 buses and extends to a non-1394 network connected to multiple 1394 buses.